
        <html>
			<head>
			     <title>一些常见的重置密码漏洞分析整理 - px1624</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/2035">http://drops.wooyun.org/papers/2035</a></h1>
				
      <p>
        <h2>0x00 前言</h2>

<hr />

<p>一般的密码重置的设计都是分为以下四步的：</p>

<pre><code>1.输入账户名
2.验证身份
3.重置密码
4.完成  
</code></pre>

<p>通常漏洞是会存在于2或者3步骤中，下面来看看常见的一些重置密码漏洞的方式。</p>

<h2>0x01 爆破类型</h2>

<!--more-->

<hr />

<p>1 这种重置密码是最多见最容易出现的一类，那就是手机验证码爆破从而重置密码。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-037829">WooYun: 爱周游任意用户密码重置及 XSS漏洞</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-021480">WooYun: 麦包包 任意用户密码重置漏洞</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-047169">WooYun: 换个姿势第三次重置拉手网任意用户密码</a> </p>

<p>这这种设计一般是在找回密码的时候，会给指定的手机号发送一个用于验证身份的验证码，然后只要用户输入正确的验证码，就可以进行密码重置了。</p>

<p>这种设计产生重置密码漏洞的情况，一般是由于验证设计过于简单，而且对校验码的校验使用次数没有进行限制，导致正确的验证码可以被枚举爆破，从而重置密码。此方法也是最常见的重置密码的方式，因为大多数厂商最开始的设置都是采取的4-6位纯数字验证码的验证方式，而且是没有防止爆破的设计。</p>

<p>2 也是采取的爆破，方法和#1类似，不过就是手机验证码变成了邮箱中的验证码。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-021722">WooYun: 有利网 也可以任意用户密码重置额~</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-021914">WooYun: 驱动之家 任意用户密码重置</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-029132">WooYun: 咕咚网设计缺陷导致任意用户密码可重置</a> </p>

<p>这这种设计一般是在找回密码的时候，会给指定邮箱发送一个用于校验的url链接，链接中一般会有一个参数就是用于验证身份的验证码，然后用户点击指定url就可以进入重置密码的页面从而去重置密码了。</p>

<p>这种设计产生重置密码漏洞的情况，也是由于重置密码链接中的验证码参数没有设计过于简单，可以被爆破，从而可以重置密码。</p>

<h2>0x02 秒改类型</h2>

<hr />

<p>3 采取的方法是偷梁换柱，一般是那种会给指定邮箱发送url重置密码链接的那种。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-021771">WooYun: 麦包包 任意用户密码重置漏洞（二）</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-024956">WooYun: 经纬网可重置任意用户密码</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-034192">WooYun: 飞马网系列之四任意用户密码重置漏洞（秒改非爆破）</a> </p>

<p>这这种设计一般是在找回密码的时候，会给指定邮箱发送一个用于校验的url链接，链接中一般肯定会存在2个比较重要的参数，一个是用户名（或者uid、qq邮箱之类的能代表用户身份的参数），另一个就是一个加密的字符串（通过服务器端的某种算法生成的用来验证用户身份的参数）。然后用户在重置密码的时候，点击邮箱中的重置密码链接，就可以重置帐号密码了。</p>

<p>这种设计产生重置密码漏洞的情况，一般是由于重置密码链接中的表示用户名的参数和用于校验的加密字符串参数没有进行一一对应，导致可以被黑客偷梁换柱，从而重置密码。</p>

<p>也就是说，那个验证身份的加密字符串是万能的。</p>

<p>比如生成的重置密码url为：http://www.xx.com/xxoo.php?username=wooyun1&amp;code=asdfghjkl 然后由于这里的参数code在服务器端验证的时候，只要其自身的算法满足服务器端的验证就直接通过了，不会去验证这个code是不是和wooyun1账户对应的。</p>

<p>从而，黑客可以直接利用url：http://www.xx.com/xxoo.php?username=wooyun2&amp;code=asdfghjkl 重置帐号wooyun2的密码。</p>

<p>4 同样是偷梁换柱，这种一般是在最后一步设置新密码的时候，程序员往往会疏忽验证用户身份，从而被偷梁换柱，重置密码。这种一般是由于前面2步骤中已经验证了身份，然后3步骤重置密码的时候没有对用户身份进行持续性的验证导致的。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-053515">WooYun: like团任意用户密码重置（秒改）</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-054905">WooYun: 科大讯飞某系统任意账号重置密码漏洞</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-046713">WooYun: 某同志手机交友应用200W用户密码任意重置(可拐走别人男友)</a> </p>

<p>5 有的时候虽然加密字符串的算法很复杂，但是在重置密码的过程中，要是程序员自己不小心将其泄漏了，那也可以被重置密码。这种属于程序员自己没有将开发调试时候的一些数据在正式上线前去掉导致的。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-058210">WooYun: 天天网任意账户密码重置（二）</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-054037">WooYun: APP终结者11#大连万达电影任意用户账户登录</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-018722">WooYun: 优酷网任意用户密码修改漏洞（验证可以秒改）</a> </p>

<p>6 有的时候利用邮箱的url重置密码，虽然不存在#3 #4 #5的情况。但是由于加密算法过于简单而被破解，导致密码重置。这种一般都是一些简单的加密算法，将一些关键参数比如用户名、邮箱、手机号、验证字符、时间戳等，进行一定的规则的组合然后进行md5、base64加密。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-045739">WooYun: djcc舞曲网任意用户密码重置漏洞（已证明）</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-047145">WooYun: 猥琐方式再次重置拉手网用户密码</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-049560">WooYun: 金蝶云之家博客任意用户密码重置</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-046999">WooYun: 当当网任意用户密码修改漏洞第三次</a> </p>

<p>7 重置密码一般需要四个步骤：<code>1.输入账户名2.验证身份3.重置密码4.完成。</code>有时候当你进行了1之后，直接去修改URL或者前端代码去进行3步骤从而也能成功的绕过了2的验证去重置密码。这种一般是由于没有对关键的身份验证的参数进行追踪导致的。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2014-054890">WooYun: 世峰户外商城设计缺陷任意重置密码</a> </p>

<p>8 有时候修改密码的时候会给邮箱或者手机发送一个新密码，那么抓包将手机号或者邮箱改成我们自己的会怎么样呢？这种一般是由于没有验证手机号或者邮箱的对应身份导致的。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-046338">WooYun: 万达某重要平台任意用户密码重置</a> </p>

<h2>0x03 需要别人交互</h2>

<hr />

<p>9 有的时候CSRF利用好的话，也可以重置用户甚至是管理员的密码。这种一般是由于登录帐号后重置密码或者绑定邮箱、手机号的时候没有token也没有验证refer导致的。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-043061">WooYun: 糗事百科另类方式重置用户密码</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-032723">WooYun: 看我如重置暴风影音账户密码（需要与用户互交）</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-028893">WooYun: 土豆网邮箱绑定csrf（可导致劫持账号）</a> </p>

<p>10 有时候XSS漏洞也可以重置密码，当然这种也是因为本身重置密码这里就有其他的设计缺陷。这种一般是用XSS劫持了账户后，由于某些奇怪的设计造成的。</p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-021329">WooYun: pptv视频上传审核通过后储存型xss（百余条用户信息可利用有vip可改密码劫持）</a> </p>

<p> <a target="_blank" href="http://www.wooyun.org/bugs/wooyun-2013-042713">WooYun: 宜搜存储型XSS+重置密码利用</a> </p>

<p>通过了解以上10种常见的重置密码的漏洞，你是不是也感觉收获了蛮多的额。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          